package com.baichang.taoshunda.jstl;

import com.baichang.framework.Constant;
import com.baichang.framework.utils.RegexUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;

/**
 * Ueditor图片自定义标签
 * Created by Dylan on 2015/11/2.
 */
public class UeditorImageTag extends SimpleTagSupport {

    private String content;

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    @Override
    public void doTag() throws JspException, IOException {
        Document document = Jsoup.parse(content);
        Elements imgs = document.select("img");
        for (int i = 0; i < imgs.size(); i++) {
            Element img = imgs.get(i);
            String url = Constant.ueditorVisitUrl + img.attr("src");
            img.attr("src", url);
            img.attr("width", "100%");
        }

        Elements telDivs = document.select("span");
        System.out.println(telDivs.size());
        for (int i = 0; i < telDivs.size(); i++) {
            Element span = telDivs.get(i);
            String spanText = span.html();
            System.out.println("spantext:"+spanText);
            if (checkCellphone(spanText) || checkTelephone(spanText) || checkTelephon400(spanText)) {
                String aHtml = "<a href='tel:" + spanText + "'>" + spanText + "</a>";
                span.html(aHtml);
            }
        }

        content = document.body().html();
        getJspContext().getOut().println(content);

    }

    /**
     * 验证手机号码
     * <p>
     * 移动号码段:139、138、137、136、135、134、150、151、152、157、158、159、182、183、187、188、147
     * 联通号码段:130、131、132、136、185、186、145
     * 电信号码段:133、153、180、189
     *
     * @param cellphone
     * @return
     */
    public static boolean checkCellphone(String cellphone) {
        String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}$";
        return RegexUtils.matcher(cellphone, regex);
    }

    /**
     * 验证固话号码
     *
     * @param telephone
     * @return
     */
    public static boolean checkTelephone(String telephone) {
        String regex = "^(0\\d{2}-\\d{8}(-\\d{1,4})?)|(0\\d{3}-\\d{7,8}(-\\d{1,4})?)$";
        return RegexUtils.matcher(telephone, regex);
    }

    /**
     * 验证400
     *
     * @param telephone
     * @return
     */
    public static boolean checkTelephon400(String telephone) {
        String regex = "^400(-\\d{3,4}){2}$";
        return RegexUtils.matcher(telephone, regex);
    }

}
